package com.cskaoyan.javse.oop2._3review.stage2;

/**
 * @description: 小练习阶段一
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import com.cskaoyan.javse.oop2._3review.stage2.model.Student;
import com.cskaoyan.javse.oop2._3review.stage2.model.StudentList;
import com.cskaoyan.javse.oop2._3review.stage2.util.ScannerUtils;

import java.util.Scanner;

public class ConsoleManage {
    public static void main(String[] args) {
        new ConsoleManage().start();
    }

    // 因为需要拿到学生数组,所以直接将它成员变量
    private StudentList sls = new StudentList();

    public void start() {
        boolean loopFlag = true;
        while (loopFlag) {
            System.out.println("\n-----------------王道Java学生管理系统-----------------\n");
            System.out.println("                   1.学 生 列 表");
            System.out.println("                   2.增 加 学 生");
            System.out.println("                   3.删 除 学 生");
            System.out.println("                   4.修 改 学 生");
            System.out.println("                   5.查 询 学 生");
            System.out.println("                   6.退 出 系 统\n");
            System.out.print("请选择功能(1-6)：");
            int input = ScannerUtils.getInteger();
            //switch选择菜单
            switch (input) {
                case 1:
                    printStuArr();
                    break;
                case 2:
                    // 先键盘录入一个学生对象
                    Student stuInput = ScannerUtils.getStudentInstance(sls);
                    // 如果键盘录入的是null,说明学号重复了,直接插入失败,给出提示完事
                    if (stuInput == null) {
                        System.out.println("录入结束,请重新开始!");
                        break;
                    }
                    if (sls.createStudent(stuInput)) {
                        System.out.println("插入成功");
                        break;
                    }
                    System.out.println("插入失败,数组已经满了!");
                    break;
                case 3:
                    System.out.println("请输入想要删除学生的学号: ");
                    int deleteId = ScannerUtils.getInteger();
                    if (sls.deleteStudent(deleteId)) {
                        System.out.println("删除成功");
                        break;
                    }
                    System.out.println("没有该对象,删除失败!");
                    break;
                case 4:
                    System.out.println("请输入想要修改学生的学号: ");
                    int updateId = ScannerUtils.getInteger();
                    if (sls.judgeStuIdOnly(updateId)) {
                        // 不重复,说明不存在这个id,不能修改
                        System.out.println("学生不存在,无法修改");
                        break;
                    }
                    // 开始键盘录入学生信息
                    Student stuUpdate = ScannerUtils.getUpdateStudentInstance(updateId);
                    // 开始更新学生信息
                    boolean flag = sls.updateStudent(updateId, stuUpdate);
                    if (flag){
                        System.out.println("修改成功!");
                        break;
                    }
                    System.out.println("修改失败!");
                    break;
                case 5:
                    System.out.println("请输入想要查询的学号: ");
                    int retrieveId = ScannerUtils.getInteger();
                    Student targetStu = sls.retrieveStudent(retrieveId);
                    if (targetStu == null) {
                        // 没找到
                        System.out.println("没有该学生!请重新查找");
                        break;
                    }
                    // 找到了就打印
                    System.out.println("学号\t姓名\t性别\t\t年级\t\t年龄\t\t电话号码");
                    targetStu.printStudent();
                    break;
                case 6:
                    //用户确定退出后询问用户 是否确认退出
                    System.out.println("确认退出吗（1/2）：");
                    int quitFlag = ScannerUtils.getInteger();
                    if (quitFlag == 1) {
                        //用户确认退出，循环变量为false 死循环终止
                        loopFlag = false;
                        System.out.println("感谢使用本系统！");
                    }
                    break;
                default:
                    System.out.println("输入有误，请重新输入！");
                    break;
            }
        }
    }

    private void printStuArr() {
        // 1.获取学生对象数组
        Student[] realStuds = sls.getRealStuds();
        // 2.打印
        System.out.println("学号\t姓名\t性别\t\t年级\t\t年龄\t\t电话号码");
        for (Student realStud : realStuds) {
            realStud.printStudent();
        }
    }
}
